<?php
/**
 * 接口控制器
 */
namespace Admin\Controller;

use Think\Controller;
use Think\Log;

class OrderApiController extends ApiBaseController
{
	public function index(){
		echo "no you can't go on ! ";exit;
	}
	

    //推送订单到进销存【单个推送订单】
    public function push_order_to_jxc(){

        
        //获取订单ID
        $order_ids = $_REQUEST['order_ids'];
        //如果没有获取到订单ID
        if( empty($order_ids) ){
            echo json_encode(array('status'=>0,'htmlTip'=>'操作失败，没有传入订单ID!!!'));
            exit;
        }
        
        $relStatus =$this-> sendToInvoicingCommon($order_ids);
        echo json_encode($relStatus);

        exit;

    }


    /* 推送订单到进销存 公共方法 */
    public function sendToInvoicingCommon($order_ids){

        /*
         *   订单推送所需字段：
         * 
         *   订单主表：
         *   order_sn           //订单编号
         *   consignee          //收货人姓名
         *   zipcode            //邮编
         *   tel                //收货人手机
         *   mobile             //收货人其他手机【备选】
         *   email              //邮件地址
         *   sen_order_type     //推送类型 1是澳买，2是澳代
         *   idcard             //身份证号码
         *   pay_time           //支付时间
         *
         *   订单商品：
         *   goods_sn    自编码
         *   bar_code     货号
         *   goods_number   数量
         *   goods_name   商品名称
         * 
         * 
         * */
        
        //得到订单id集合
        $order_ids_arr=explode(',',$order_ids);
        if(empty($order_ids_arr)){
            return array('status'=>0,'htmlTip'=>'推送失败：没有传入订单记录');
        }

        //进销存订单推送路径
        $invoiceAsycUrl=C('PUSH_ORDER_TO_JXC_WEB_URL');
        //获取加密字符串
        $token=C('token');

        //推送的订单数据记录
        $push_order_list=array();
        

        foreach ($order_ids_arr as $key => $value) {

            //【容错处理】
            $order_sn=$value;
            if(empty($order_sn)){
                continue;
            }

            //根据订单ID查询订单对象信息
            $order = M('order_info')->field('order_id,order_sn,consignee,zipcode,tel,mobile,email,idcard,pay_time,order_status,pay_status,shipping_status,is_send_ok,photo_options')->where(array('order_sn'=>$order_sn))->find();
            
            //如果订单对象没有查询的到
            if(empty($order)){
                continue;
            }
            
            //如果没有支付成功
            if($order['pay_status']!=2){
                continue;
            }

            //如果已经推送成功
            if($order['is_send_ok']==1){
                continue;
            }
            
            //得到订单商品记录
            $order_goods=M('order_goods')->field('goods_sn,goods_name,attribute_text,sum(goods_number) as goods_number')
            ->where(array('order_id'=>$order['order_id']))->group('goods_sn')->select();

            //查询订单的bar_code
            foreach ($order_goods as $key_g => $value_g) {
                $goods_sn=$value_g['goods_sn'];
                $bar_code=M('goods')->where(array('goods_sn'=>$goods_sn))->getfield('bar_code');
                $order_goods[$key_g]['bar_code']=$bar_code;
            }
            
            $order['orderItemList']=$order_goods;

            $push_order_list[]=$order;

        }
        
        if(empty($push_order_list)){
            return array('status'=>0,'htmlTip'=>'推送失败：没有商品记录，或所选商品未支付，或者所选记录都已经推送过了');
        }

        
        //与接口连接的密钥
        $need_push_data['token']=$token;
        //1是澳买，2是澳代
        $need_push_data['send_order_type'] = 2;
        //订单数据
        $need_push_data['orderList'] = json_encode($push_order_list);

        // print_r($need_push_data);die;
        // echo $invoiceAsycUrl;die;
        // $need_push_data=json_encode($need_push_data);

		$result  =$this-> aomai_Post_action_old2($invoiceAsycUrl,$need_push_data);
		$result = json_decode($result,true);
         
        /*
         * $result 参数
         * resultCode: 1成功，0失败
         * resultMsg: 接口返回结果
         * successNum: 推送成功个数
         * failNum:推送失败个数
         * 
         **/
        
        //记录日志
        write_file_aomai_ftp_v2('orders_aysnc','push_order','push_data:'.json_encode($need_push_data));
        write_file_aomai_ftp_v2('orders_aysnc','push_order','push_result:'.json_encode($result));
        
        
        $resultCode=intval($result['resultCode']);
        $resultMsg=$result['resultMsg'];
        $resultorderIds=$result['orderId']; //推送成功的订单ID集合
        $successNum=intval($result['successNum']);
        $failNum=intval($result['failNum']);
        
        //推送成功
        if($resultCode==1){
            
            $resultStatus = 1; 
            $resultMsg='推送成功 ，成功数：'.$successNum.' 失败数：'.$failNum;
            
        }else{
            
            $resultStatus = 0;
            $resultMsg = '操作失败,原因：'.$result['resultMsg'];
            
        }
        
        
        //修改订单已推送完成
        foreach ($resultorderIds as $key => $value) {
            
            $order_id=$value;

            //修改订单状态为推送ok
            $order_info_update['is_send_ok']=1;
            M('order_info')->where(array('order_id'=>$order_id))->save($order_info_update);
            
            //查询一下订单当前状态
            $order=M("order_info")->where(array('order_id'=>$order_id))->field("pay_status,order_status,shipping_status")->find();

            /* 推送一次就记录一次日志 */
            //订单操作日志
            //插入一条订单操作记录。
            $order_action['action_note'] = '推送到进销存,'.$resultMsg;
            $order_action['order_id'] =$order_id;
            $order_action['action_user'] = $_SESSION['admin_name'];
            $order_action['order_status'] = $order['order_status'];
            $order_action['shipping_status'] = $order['shipping_status'];
            $order_action['pay_status'] = $order['pay_status'];
            $order_action['action_place'] = "SYSTEM";
            $order_action['log_time'] = time();

            M('order_action')->add($order_action);


        }

        
        

        return array('status'=>$resultStatus,'htmlTip'=>$resultMsg);

    }


    /**
     * post提交数据
     * */
    function aomai_Post_action_old2($url,$data){ // 模拟提交数据函数

        

        $curl = curl_init(); // 启动一个CURL会话
        curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"); // 模拟用户使用的浏览器
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
        curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
        // curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt'); // 读取上面所储存的Cookie信息
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
        curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
        $tmpInfo = curl_exec($curl); // 执行操作
        if (curl_errno($curl)) {
            return 'Errno:'.curl_error($curl);
        }
        curl_close($curl); // 关键CURL会话
        return $tmpInfo; // 返回数据
    }


	
}


?>

